home *** CD-ROM | disk | FTP | other *** search
/ Amiga Game-Power / Amiga Game-Power.iso / pd mix i / pict saver / analyrim / dbmsdocs.zoo / AnalyFunctionRef.Card next >
Text File  |  1991-10-19  |  43KB  |  865 lines

  1.  
  2.  
  3.                                COMMANDS
  4.  
  5.       The commands available in AnalytiCalc are each described separa-
  6.  tely.  The following is  a  brief  listing  alphabetically  of  their
  7.  names.  Some infrequently used commands are omitted.  
  8.  
  9.   +J filename                Start journaling to filename 
  10.   +N                         Close journal file 
  11.   <                          Rewind input file 
  12.   %prompt%cmd%key%           Issue prompt and do cmd depending on key 
  13.   $ or }                     Perform operating system command 
  14.   > or >>pattern             Search for formula containing or starting
  15.                               with pattern 
  16.   *                          Comment line 
  17.   -prompt                    Load arguments after prompt 
  18.   //                         Use "Command-Mostly" mode 
  19.   /;                         Use "Enter-Mostly" mode 
  20.   /#                         Swap   current   mode   with   save  mode
  21.                               (command-mostly or enter-mostly) 
  22.   1,2,3, or 4                Move cursor Up, Down, Left, or Right 
  23.   @file.typ                  Read file.typ as input instead of console 
  24.   AA nn {R/C}                Add absolute nn rows or columns 
  25.   AR nn {R/C}                Add relocating nn rows or columns (nn may
  26.                               be neg) 
  27.   CA in-range out-range      Copy All (Absolute) 
  28.   CV in-range out-range      Copy Value 
  29.   CF in-range out-range      Copy Formula (and Format) 
  30.   CR in-range out-range      Copy Relocating (all) 
  31.   DB ncol,nrow               Display Bounds (no.  cols,rows on screen) 
  32.   DF range [format]          Display Format of range to format 
  33.   DL range {R/C}n:m          Display  Locate  range as Row/Col to dis-
  34.                               play col:row n:m 
  35.   DS{R/C}{A/D} n             Display Sort row/col, Asc/Desc row/col n 
  36.   DT range {F/I}             Display Type range as Float or Integer 
  37.   DW ncol,wid                Display  Width  of  col  "ncol"  to "wid"
  38.                               chars 
  39.   E expression               Enter expression into cell 
  40.   E" expression              Enter   expression   as   text,  no  case
  41.                               translation 
  42.   ED 'oldstring'newstring'   EDit cell 
  43.   ET expression              Enter expression as UPPER CASE text 
  44.   EV expression              Enter expression as computable formula 
  45.   F filename/nskip           File read from filename onto display 
  46.   G                          Get saved sheet.  Many variants.  
  47.   Hn                         HELP and show page n 
  48.   IR inrange outrange        In  Place Relocate inrange as if moved to
  49.                               outrange 
  50.   K                          Go   into  interactive  calculator  (need
  51.                               *V 3).  *E goes back.  
  52.   L cell                     Go to cell 
  53.   M{0/1/2/3/4/5}             Move - set move direction after enter 
  54.   MS or MH                   Macrocell Show or Hide - show or hide in-
  55.                               cluded files.  
  56.   OA cell                    Origin  Absolute  cell  - Map Screen with
  57.                               cell in upper left 
  58.   OAD cell                   Origin   Absolute  Displace  cell  -  Map
  59.                               Screen with cell in upper  left  leaving
  60.                               old windowing alone 
  61.   OR cell                    Origin   Relative   cell   -  map  screen
  62.                               down/right of cursor with cursor=cell 
  63.   ORD cell                   Origin   Relative  Displace  cell  -  map
  64.                               screen   down/right   of   cursor   with
  65.                               cursor=cell leaving old windows 
  66.   OV +                       OVerride absolute refs, make relative 
  67.   OV -                       OVerride off - let abs refs be absolute 
  68.   P                          Put (save) spreadsheet.  Many variations. 
  69.   PL v1:v2[,v3:v4][;plot command] Save plot number file and invoke plot
  70.                 command. commands are designed to allow
  71.                 use by GnuPlot or similar.
  72.   R                          Recalculate sheet 
  73.   RB cell                    Set Relocate Boundary at cell 
  74.   RF                         Recalculate, Force recalc of constants 
  75.   RM                         Recalculate  Manual  -  no recalc until R
  76.                               cmd 
  77.   S                          Setup - Global mapping/width/title setups 
  78.   TE expression              TEst  -  Evaluate  math expression in cmd
  79.                               mode - many special variants.  
  80.   V                          View - Redraw screen 
  81.   VF                         View  Formulas  -  Draw with Formulas in-
  82.                               stead of numbers 
  83.   VM                         View Manual - no screen repaint until a V
  84.                               cmd 
  85.   VH+, VH-                   View Hack on/off. Controls display of row
  86.                               being calculated during recalcs.
  87.   W                          Write display to file or printer.  
  88.   X                          eXit  from AnalytiCalc.  Asks for confir-
  89.                               mation.  
  90.   ZE range               ZEro range of cells 
  91.   ZA                         Zero  All  of  sheet.  Asks for confirma-
  92.  
  93.  The available multiple argument functions are:  
  94.    SUM[variables]     Sum of all arguments
  95.    MAX[variables]     Max of arguments
  96.    MIN[variables]     Min of arguments
  97.    AVG[variables]     Average of arguments
  98.    AVE[variables]     Average of arguments ignoring cells
  99.                       containing 0.0 (e.g., labels)
  100.    STD[variables]     Standard deviation squared
  101.    IF [V1.rel.V2] statement | else-statement
  102.    AND[variables]     Boolean AND of all variables in list
  103.    IOR[variables]     Boolean inclusive OR of variables
  104.    NOT[variable]      Boolean complement of variable
  105.    XOR[v1,v2]         Boolean exclusive OR of v1,v2
  106.    EQV[V1,V2]         Boolean "equivalence" of V1,V2
  107.                       (complement of exclusive OR, true if
  108.                       bits have the SAME value)
  109.    CNT[variables]     Number of nonzero variables in list
  110.    MOD[V1,V2]         Returns V1 modulo V2 (i.e., remainder
  111.                       of V1/V2 division.)
  112.    SGN[v1]            Returns 1.0 times sign of V1
  113.    LKP[var,variables] Lookup variable in "variables" range
  114.                       greater or equal to var, return its
  115.                       index (starting with 0) into variables
  116.                       range.
  117.    LKN[var,variables] Lookup variable in "variables" range
  118.                       less than or equal to var, return its
  119.                       index (starting with 0) into variables
  120.                       range.
  121.    LKE[var,variables] Lookup variable in "variables" range
  122.                       strictly equal to var, return its index
  123.                       (starting with 0) into range. Note all
  124.                       LKP, LKN, LKE return the last variable
  125.                       index if no satisfactory value found.
  126.    NPV[disc,vars]     Net Present Value of vars (equal time
  127.                       values assumed; computes discount
  128.                       disc where disc is a fraction
  129.                       (e.g., .12 for 12%). Be sure the arguments
  130.                       are all cells, not literals, including the
  131.                       disc argument. Set a cell to the fraction
  132.                       desired for the disc argument and use its
  133.                       name in the arguments to NPV, rather than
  134.                       attempting to use a literal (e.g., 0.12)
  135.                       directly.
  136.    IRR[PV,FV,returns] Internal Rate of Return. Will compute
  137.                       internal rate of return on up to 20
  138.                       periods, returning rate per period.
  139.                       The returns are expected to be at
  140.                       equal time intervals. PV and FV are
  141.                       initial and final values of investment
  142.                       and the result is computed via Newton
  143.                       approximation. As with all functions here,
  144.                       be sure all arguments are cell names, not
  145.                       literal numbers.
  146.    PMT[princ,inter,nper] Payment function. Generates payment
  147.                       given principal amount, interest per
  148.                       period (as a fraction), and number of
  149.                       periods.
  150.    PVL[pmt,inter,nper] Present Value function. Generates present
  151.                       value of a loan given payment amount, 
  152.                       interest rate, and number of periods.
  153.                       All financial functions assume that
  154.                       payments are for equal time intervals.
  155.    RND[V1]            Random number. Generates a random number
  156.                       distributed uniformly in the interval
  157.                       0.0 to 1.0. An argument is required but
  158.                       never touched.
  159.    CHS[Idx,Range]     Choose cell from range based on value of cell
  160.                       Idx. If cell IDX contains 1, first element of
  161.                       range is chosen; if 2, second, etc. Zero is
  162.                       returned if out of range. Range can be any
  163.                       comma-delimited list of ranges also.
  164.    ATM[A1,A2]         Arc Tangent of A1/A2, but four quadrant 
  165.                       version. Note these are single cells.
  166.  
  167.  In  all  cases  except  IF, arguments are variable names separated by
  168.  commas, or variable ranges, or mixtures separated by  columns.   Note
  169.  too  that  ALL  THESE  FUNCTIONS  REQUIRE  CELLS  OR  ACCUMULATORS AS
  170.  ARGUMENTS;  literals and single argument functions may  NOT  be  used
  171.  here.   (That is why it is easy to place multiple commands on a line;
  172.  the ACs or cells may be loaded in "separate" steps.) The IF [] state-
  173.  ment  is a partial exception since a range may be used to replace ei-
  174.  ther variable inside the []  condition  brackets.   The  sum  of  the
  175.  ranges will be used in that case.  A possible IF statement might look
  176.  like 
  177.  
  178.  IF [S2.LT.S5] R=2. | R=0.  
  179.  
  180.  
  181.                      Summary of Variable Addressing
  182.  
  183.       Variable names may be of several forms;  examples will  be given
  184.  first to illustrate.  
  185.  
  186.       D5 - Cell is in column D, 5th row down.  (Col. 4, Row 5)
  187.  
  188.       D$5 - Cell is column D, 5th row down, but in  relocating  copies
  189.  the column (D) is not altered (unless the global override is set).  
  190.  
  191.       D5$ - As above but the row is not alterable.  
  192.  
  193.       D$5$  -  As above but neither row nor column may be altered...an
  194.  "absolute" reference.  
  195.  
  196.       P#4#7  - Cell addressed is 4 columns to the right of and 7  rows
  197.  down from  the current cell.  (P#0#0 is the current cell).  These are
  198.  computed  on  the  base  spreadsheet.  This form of addressing is not
  199.  subject to relocation, ever.
  200.  
  201.       D#4#7 - Cell  addressed  is  the cell DISPLAYED 4 columns to the
  202.  right of the current  one and 7 rows down.  Since the display map can
  203.  be anything, this means the  actual  cell referenced can be anything,
  204.  depending on  the  current  display.   This form of addressing is not
  205.  subject to relocation, ever.
  206.  
  207.       P#%AB - Supposing accumulator A contains  4  and  accumulator  B
  208.  contains 7, the cell referenced is 4 columns right of the current one
  209.  and 7 rows down on the physical sheet.  
  210.  
  211.       D#%AB  -  Supposing accumulator A contains 4 and  accumulator  B
  212.  contains 7, the cell referenced is 4 columns right of the current one
  213.  and 7 rows down on the display.  
  214.  
  215.       P#_AB  - If accumulator A contains 4 and accumulator B  contains
  216.  2, the cell addressed is D2 (4th column over, 2nd row).  
  217.  
  218.       P#$D3:C2:  - if cell D3 contains 4.0 and cell C2  contains  2.0,
  219.  the cell addressed is D2 again. 
  220.  
  221.                             Variable Names
  222.  
  223.       A valid variable name might be H14 or N22 or A3, or the position
  224.  independent forms P#n#m and D#n#m where n and m are offsets in Physi-
  225.  cal or Display sheets from the current column and row.  A valid range
  226.  is 2 variable names separated by colon (:).  Thus the range B2:B12 is
  227.  valid  and  means  B2  through  B12  inclusive.  The range expression
  228.  D#0#1:D#0#12 is also valid and means the cells on the  display  sheet
  229.  in  the  same  column but 1 to 12 rows down from the current cell in-
  230.  clusive.  (The displacements may be negative too, with - sign to  in-
  231.  dicate  it,  as D#-3#2 for the display cell 3 columns left and 2 rows
  232.  down from the current position.) The P# and  D#  forms  are  valuable
  233.  since they work wherever you move them.  Other variables may be relo-
  234.  cated when moved (renaming them to  correspond  to  their  new  loca-
  235.  tions),  but  the P# and D# forms need never change and allow working
  236.  with projections across the physical sheet in  various  ways.   There
  237.  are a few restrictions with these forms.  They usually need to be en-
  238.  closed in parentheses (e.g.  (P#3#5) rather than  P#3#5)  inside  ex-
  239.  pressions.  For most purposes they do work interchangeably with other
  240.  name schemes however, though the "normal" naming scheme is  generally
  241.  easier to use.  Copying with relocation works with normal cell names,
  242.  provided that the cursor is above and left of  cells  to  be  renamed
  243.  (see  below).   The keypad copy command normally moves to A1 during a
  244.  copy for this reason.  The D# forms do not always  work  in  the  ex-
  245.  tended address areas of the sheet, depending on recalculation mode.  
  246.  
  247.       The special construction P#%ab or D#%ab allows relative address-
  248.  ing relative to current physical or display location using  accumula-
  249.  tors  named  a  or b (where a or b may be any accumulator name from A
  250.  through Z but upper case is REQUIRED).  This computable relative  ad-
  251.  dressing  affords  greater flexibility in command procedure construc-
  252.  tion.  
  253.  
  254.       In Amiga AnalytiCalc,  the cell address form P#_cr is available.
  255.  This address provides absolute  cell  addresses  using the numbers in
  256.  the two accumulators c and r for the column and row of the cell to be
  257.  accessed.    Since  accumulators  run  out    somewhat    quickly  in
  258.  AnalytiCalc, an alternate addressing form is also  provided.  If cell
  259.  Cn holds a column number and cell Rn  holds  a  row  number, the cell
  260.  name P#$Cn:Rn:  will address the cell whose column is in Cn and whose
  261.  row is in Rn.  Such addressing may be indirect  to  one  level  only;
  262.  that  is,  the Cn and Rn may be any legal address  form  for  a  cell
  263.  EXCEPT the P#$cell1:cell2:    form.    These  address  forms permit a
  264.  degree of data driven  computation  unavailable  in other spreadsheet
  265.  type programs.  
  266.  
  267.        If a formula contains the construction {VN (where VN is any cell
  268.  name), the FORMULA for cell VN is inserted  into  the  formula  being
  269.  evaluated at that point, when the cell value is to be computed. 
  270.  
  271.                           Function Arguments
  272.  
  273.       Note  that  the  square  brackets  ([])  are  needed  to delimit
  274.  arguments in multiple argument functions.  The results  are  left  in
  275.  accumulator  % and in the cell.  The IF form will compare 2 variables
  276.  and execute either the statement or the  else-statement  (which  must
  277.  NOT be another IF).  The valid relations are:  
  278.        .EQ.    Equal
  279.        .NE.    Not Equal
  280.        .GT.    Greater than (V1 greater than V2)
  281.        .LT.    Less than (V1 less than V2)
  282.        .GE.    Greater than or Equal to (V1 >= V2)
  283.        .LE.    Less than or Equal to (V1 =< V2)
  284.  and  must  appear  in  this  form.   (Note  that  your  formulas must
  285.  generally be in upper case only;  text can be anything.) 
  286.  
  287.                     Accumulators (Scratch Storage)
  288.  
  289.       The single letter accumulators of Calc mode (letters A through Z
  290.  and %) are available globally and may take  on  all  Calc  mode  data
  291.  types.
  292.  
  293.       Formulas entered may have the following constructs which will be
  294.  edited into the formula as entered  (so  a  command  file  can  enter
  295.  them):  
  296.  
  297.           _@V1,V2  Means  get  the  values stored in V1 and V2 and use
  298.                them as column and row locations pointing at some  cell
  299.                in  the  sheet.  Replace the construct with the name of
  300.                that cell.  
  301.           _#V1  Means take the real number in cell V1 and unpack it as
  302.                if it had been a packed value from  a  formula  with  8
  303.                characters packed;  then convert it back into ASCII and
  304.                place in the formula in place of this construct.   This
  305.                construct  is  intended  to  be  used with the *U STRVL
  306.                function to allow retrieval and edit of formulas.   The
  307.                *U XQTCM  function  permits use of the EDit command (as
  308.                well as others) within a cell for string  manipulation.
  309.                Only  8  characters  at  a time may be represented (the
  310.                limit imposed by cell size), but  repeated  use  allows
  311.                handling  any  desired length.  An application would be
  312.                setting the cell used as V1 to a packed  representation
  313.                of either of two strings inside an IF [] and then EDit-
  314.                ing the string into the formula as desired where one of
  315.                the  2 strings should be made to appear.  This capabil-
  316.                ity is crude but provides the bare bones functionality.
  317.                Additional  USRFCT calls to give simpler (but more ver-
  318.                bose) string manipulations are  not  too  hard  to  add
  319.                should the user need them.  
  320.  
  321.                             Formula Length
  322.  
  323.       Formulas have 109 characters allotted to them for use inside the
  324.  spread sheet. The *@file command may be used to extend this to any length
  325.  via an external macro.
  326.       The following special functions are available:  
  327.  
  328.   FUNCT NAME   ARG TYPE    FUNCT VALUE   DESCRIPTION
  329.   -------------------------------------------------------
  330.   ABS          REAL        REAL         absolute value
  331.   DABS         REAL        REAL         absolute value
  332.   IABS         INTEGER     INTEGER      absolute value
  333.   IFIX         REAL        INTEGER      REAL to INT conv.
  334.   AINT         REAL        REAL         REAL truncation
  335.   INT          REAL        INTEGER      REAL to INT conv.
  336.   IDINT        REAL        INTEGER      REAL to INT conv.
  337.   EXP          REAL        REAL         e**X
  338.   DEXP         REAL        REAL         e**X
  339.   ALOG         REAL        REAL         natural logarithm
  340.   DLOG         REAL        REAL         natural logarithm
  341.   ALOG10       REAL        REAL         logarithm base 10
  342.   DLOG10       REAL        REAL         logarithm base 10
  343.   SQRT         REAL        REAL         square root
  344.   DSQRT        REAL        REAL         square root
  345.   SIN          REAL        REAL         trigonometric sine
  346.   DSIN         REAL        REAL         trigonometric sine
  347.   COS          REAL        REAL         trig. cosine
  348.   DCOS         REAL        REAL         trig. cosine
  349.   TANH         REAL        REAL         hyperbolic tangent
  350.   DTANH        REAL        REAL         hyperbolic tangent
  351.   ATAN         REAL        REAL         arc tangent
  352.   DATAN        REAL        REAL         arc tangent
  353.  
  354.  
  355.  
  356.                  AnalytiCalc File Interface Functions
  357.  
  358.       Command  level functions are given as FILcccccc where ccc is the
  359.  actual command.  Equivalent functions are available from cells  using
  360.  the  syntactic form *U DBcccccc arguments (where the "arguments" part
  361.  is any arguments, generally some required.) 
  362.  
  363.       Some  extra  optional  VAX functions exist that allow regions of
  364.  the sheet to come from or go to sequential or random files to or from
  365.  some range of cells.  
  366.  
  367.       The  following  commands  exist  (the  "*U DB"  or  the "FIL" is
  368.  omitted:) 
  369.  
  370.  
  371.  
  372.    OPINS range filename 
  373.           Open  input  sequential  on filename for cells in range When
  374.           the input file is open and any operation causes  a  read  of
  375.           the  cell, the FORMULA will be taken from the file and used.
  376.           If the file is opened with the OPINU  option  (for  Update),
  377.           then  when  the FORMULA of the cell is written, it will also
  378.           write to the file.  The OPINU option applies only to  random
  379.           access  files.   Initially  both  input and output reads are
  380.           disabled (ENAINP and ENAOUT enable them).  When a sequential
  381.           file  (or  device such as a mailbox, pipe, or communications
  382.           line) is used for input, it is  advantageous  to  read  data
  383.           into a range once, then disable input/output again, to allow
  384.           it to be handled between these  commands.   The  EDTINP  and
  385.           FMTOUT commands are designed to do this to make it easier to
  386.           use AnalytiCalc for a filter between sequential files.  
  387.    OPINR range filename 
  388.           Open input random on filename for cells in range 
  389.    OPINU range filename 
  390.           Open range for update on filename for read and write as ran-
  391.           dom access.  
  392.    CLSINP 
  393.           Close input 
  394.    CLSOUT 
  395.           Close output 
  396.    OPOUTS range filename 
  397.           Open output sequential from range cells to filename 
  398.    OPOUTR range filename 
  399.           Open output random from range on filename 
  400.    ENAINP 
  401.           Enable input file readin (initially disabled) 
  402.    ENAOUT 
  403.           Enable output write (initially disabled) 
  404.    DISINP 
  405.           Disable input area readin 
  406.  
  407.    DISOUT 
  408.           Disable output write 
  409.    EDTINP range 
  410.           Enables  input  and  output  and, for each cell in the given
  411.           range,  reads  and  writes  the  cell,  allowing  the   file
  412.           read/writes  to  take effect.  Each cell is flagged as valid
  413.           but of text type;  the DF command must be used to reset  any
  414.           that  should be treated as computable.  Input and output are
  415.           disabled on completion of the command.  
  416.    FMTOUT range 
  417.    VALOUT range 
  418.           Enables  input  and  output  and  for each cell of the range
  419.           takes the VALUE of the cell, reads the cell, sets it of text
  420.           type,  and  writes  the  text equivalent of its value to the
  421.           cell.  In the FMTOUT command the cell's  display  format  is
  422.           used  for  the  conversion.   In  the VALOUT command a large
  423.           builtin format is used to preserve all  significant  digits.
  424.           Spaces  are  discarded prior to output.  Cells are left con-
  425.           taining textual data corresponding to their numeric  values,
  426.           stored in the formulae.  The DF command may be used to reset
  427.           these cells to numeric types if desired.  Conversion  errors
  428.           are ignored.  Input and output are disabled on completion of
  429.           the command.  
  430.    CMPFRM V1:V2[,V3:V4] 
  431.           Compares  two  formulas.   It returns, in the % accumulator,
  432.           the index of the formula in cell V2 in the formula  in  cell
  433.           V1.   Lengths  used are those of both formulas UNLESS the V3
  434.           and V4 cell arguments are seen.  In that case the  value  of
  435.           V3  will be used as the length of the formula for V1 and the
  436.           value of V4 will be used as the length of cell V2.   If  ei-
  437.           ther  value  in  V3 or V4 is outside the range 1 to 109 both
  438.           values in V3 and V4 will be ignored.  Also on output  the  W
  439.           accumulator  will  be set to -1.  if V1 is lexically earlier
  440.           than V2, 0.  if they are lexically equal, and +1.  if V1  is
  441.           lexically later than V2.  
  442.    LENFRM V1:V2 
  443.           returns  the  length of the formula for cell V1 in the % ac-
  444.           cumulator and in cell V2 IF CELL V2 IS VALID.  Otherwise the
  445.           cell  specified  in V2 is ignored, though it must be present
  446.           in the command or function.  
  447.    TRMFRM V1:V2,V3,V4 
  448.           Reads  the formula in V1 and uses V3 and V4 as start and end
  449.           byte numbers within it.  It returns to V2 the  formula  that
  450.           is  between the start and end bytes, trimming the V1 formula
  451.           into V2 by chopping out the undesired parts.  The find  sub-
  452.           string  function  CMPFRM can be used to find delimiter bytes
  453.           if absolute columnar formatting is not desired.  
  454.  
  455.  
  456.       Associated  DBxxxxxx  and FILxxxxxx commands both exist and have
  457.  the same syntax.  
  458.                        AnalytiCalc Logical Names
  459.  
  460.  
  461.       AnalytiCalc/Amiga  has  a  symbol table and allows you to define
  462.  symbolic names of up to 16 characters length, containing  letters  or
  463.  numbers, and use them inside equations.  
  464.  
  465.       To define a symbolic name, use the command 
  466.  
  467.  TE {SYMBOLICNAME=Vn 
  468.  
  469.  where Vn is a cell name (like A5, R17, AB122, or the like), and "SYM-
  470.  BOLICNAME" is the name you wish to define.  The  name  is  now  asso-
  471.  ciated with the CONTENTS OF the cell named (as Vn).  When you use the
  472.  construct {SYMBOLICNAME in an equation, the contents of the cell  as-
  473.  sociated  with  that  name replace the name prior to evaluation.  Any
  474.  contents may be used, though the total resulting string must not grow
  475.  to  over  109 characters.  Recursive substitutions are permitted to a
  476.  depth of 20, so name definitions may use other name definitions.  
  477.  
  478.       To remove a name definition, use the command 
  479.  
  480.  TE {SYMBOLICNAME=0 
  481.  
  482.  
  483.  
  484.  
  485.                               Appendix D
  486.                      AnalytiCalc Function Summary
  487.  
  488.  
  489.       The available multiple argument functions are:  
  490.    SUM[variables]     Sum of all arguments
  491.    MAX[variables]     Max of arguments
  492.    MIN[variables]     Min of arguments
  493.    AVG[variables]     Average of arguments
  494.    AVE[variables]     Average of arguments excluding zero args
  495.    STD[variables]     Standard deviation squared
  496.    AND[variables]     Boolean AND of all variables in list
  497.    IOR[variables]     Boolean inclusive OR of variables
  498.    NOT[variable]      Boolean complement of variable
  499.    XOR[v1,v2]         Boolean exclusive OR of v1,v2
  500.    EQV[V1,V2]         Boolean "equivalence" of V1,V2
  501.                       (complement of exclusive OR, true if
  502.                       bits have the SAME value)
  503.    CNT[variables]     Number of nonzero variables in list
  504.    MOD[V1,V2]         Returns V1 modulo V2 (i.e., remainder
  505.                       of V1/V2 division.)
  506.    SGN[v1]            Returns 1.0 times sign of V1
  507.    LKP[var,variables] Lookup variable in "variables" range
  508.                       greater or equal to var, return its
  509.                       index (starting with 0) into variables
  510.                       range.
  511.    LKN[var,variables] Lookup variable in "variables" range
  512.                       less than or equal to var, return its
  513.                       index (starting with 0) into variables
  514.                       range.
  515.    LKE[var,variables] Lookup variable in "variables" range
  516.                       strictly equal to var, return its index
  517.                       (starting with 0) into range. Note all
  518.                       LKP, LKN, LKE return the last variable
  519.                       index if no satisfactory value found.
  520.    NPV[disc,vars]     Net Present Value of vars (equal time
  521.                       interval numbers), at discount rate
  522.                       disc where disc is a fraction
  523.                       (e.g., .12 for 12%)
  524.    IRR[PV,FV,returns] Internal Rate of Return. Will compute
  525.                       internal rate of return on up to 20
  526.                       periods, returning rate per period.
  527.                       The returns are expected to be at
  528.                       equal time intervals. PV and FV are
  529.                       initial and final values of investment
  530.                       and the result is computed via Newton
  531.                       approximation.
  532.     PMT[princ,inter,nper] Payment (mortgage payment per period)
  533.                       function. Will compute payment per period
  534.                       for principal amount "princ" with interest
  535.                       per period as "inter" and number of periods
  536.                       as "nper". All arguments must be cells.
  537.                       The formula is the standard ordinary annuity
  538.                       formula. Interest rate must be a fraction so
  539.                       that 14% would be 0.14, for example.
  540.     PVL[payment,inter,nper] Present Value formula. Computes present
  541.                       value of an annuity given "payment", the payment
  542.                       per period, interest rate per period (as a
  543.                       fraction, so 12% is 0.12) in "inter", and
  544.                       number of periods as "nper". All arguments
  545.                       must be in cells.
  546.     RND[DUM]          Generates a random number between 0. and
  547.                       1.0. An argument is needed but it is
  548.                       NOT touched by this function.
  549.  .INDEX Random numbers
  550.  .Index RND function
  551.  
  552.     IF [V1.rel.V2] statement | else-statement
  553.      Compares two variables and executes either "statement" (if the
  554.       relation is true) or "else-statement" (if the relation is
  555.       false).
  556.      Valid relations (in the place of the .rel. above) are:
  557.        .EQ.    Equal
  558.        .NE.    Not Equal
  559.        .GT.    Greater than (V1 greater than V2)
  560.        .LT.    Less than (V1 less than V2)
  561.        .GE.    Greater than or Equal to (V1 >= V2)
  562.        .LE.    Less than or Equal to (V1 =< V2)
  563.  
  564.  
  565.       The following special constructs in a formula act as functions: 
  566.           _@V1,V2  Means  get  the  values stored in V1 and V2 and use
  567.                them as column and row locations pointing at some  cell
  568.                in  the  sheet.  Replace the construct with the name of
  569.                that cell.  
  570.           _#V1  Means take the real number in cell V1 and unpack it as
  571.                if it had been a packed value from  a  formula  with  8
  572.                characters packed;  then convert it back into ASCII and
  573.                place in the formula in place of this construct.   This
  574.                construct  is  intended  to  be  used with the *U STRVL
  575.                function to allow retrieval and edit of formulas.   The
  576.                *U XQTCM  function  permits  use  of  the  EDit command
  577.                within a cell for string manipulation.  
  578.  
  579.  
  580.       The following "equation commands" also act as functions with the
  581.  effects described:  
  582.   *@filename      Where  filename  is  the name of a file of CALC com-
  583.                mands.  CALC reads the file and executes the commands. 
  584.   *ASCII     Declares a list of variables to be of type ASCII.  
  585.   *C     COMMENT line.  
  586.   *N     NOVIEW.  
  587.   *V     VIEW.  Controls printing options in K mode 
  588.   *R     READ.  Allows a single line to be read from the terminal.  
  589.   *REAL     declares specified variables to be REAL*8.  
  590.   *DECIMAL     Declares specified variables to be REAL*8.  
  591.   *S     STOP.  Same as *E.  Goes back to spreadsheet.  
  592.   *E     EXIT.  Gets out of K mode, back to spreadsheet mode.  
  593.   *Z     ZERO.  Zeroes all accumulators.  
  594.   *G        *G  V1,V2  (where V1 and V2 are cell or accumulator names)
  595.                will evaluate V1 and V2 as the column and row  numbers,
  596.                on  the  physical  sheet, of the desired cell.  The ad-
  597.                dressed cell's value  is  retrieved  and  used  as  the
  598.                resulting number.  
  599.   *W        Takes  the  value at the current cell and writes it out to
  600.                the formula as a numeric  (floating)  value.   The  *WF
  601.                command  stores the cell similarly, but uses the format
  602.                of the current cell instead of the D32.25  format  used
  603.                for *W.  
  604.   *P        The  *P  command  resets  the current cell coordinate from
  605.                within a cell (until the next cell is evaluated  only).
  606.                It has several forms:  
  607.  
  608.              *P - By itself, *P causes Calc to prompt for the new phy-
  609.                sical column and row number.  
  610.              *P V1 - This moves the current location to the named cell
  611.                where V1 is the cell name (e.g.  A5, H2) 
  612.              *P@  V1,V2  -  This uses V1 and V2 (cell names) as column
  613.                and row numbers and changes the current  physical  cell
  614.                position  to  that  defined by the contents of cells V1
  615.                and V2.  This gives complete addressing  of  the  sheet
  616.                from within any cell.  
  617.   *F         *F Label - If the value in % is positive and nonzero this
  618.                command rewinds the input file for  the  AnalytiCalc  @
  619.                command  and seeks a line beginning with the characters
  620.                *CLabel (where "label" is what you  put  after  the  *F
  621.                command).  
  622.   *J         *J  Label  -  This  command behaves as the *F command but
  623.                operates on the file used by the Calc *@ command rather
  624.                than the AnalytiCalc one.  
  625.   *QF 
  626.   *QW         The  *QF  (Float)  or  *QW  (write) commands are used to
  627.                examine sequential files  created  outside  AnalytiCalc
  628.                and return values or formulas.  Their syntax is 
  629.            *QF filename ?key1?  ?key2?  <lm> 
  630.         or *QW filename ?key1?  ?key2?  <lm> 
  631.                where ?key2?  is optional 
  632.                l  and  m are delimiter characters for start and end of
  633.                the parts of the selected records to extract  (defaults
  634.                to  first part of the record) filename is just the file
  635.                specifier in the host OS.  The *QF command gets a  part
  636.                of  a record containing the keys specified and turns it
  637.                into a number ("floats" it).  The  *QW  command  Writes
  638.                that  part  of  the  record  to a formula.  The special
  639.                characters  in  the  <lm>  part  of  the  command   are
  640.                delimiters of the area to be picked out.  Variant forms
  641.                allow such choosing to be by column number  instead  of
  642.                key character if needed.  
  643.  
  644.   *U YRMOD VY,VM,VD 
  645.  
  646.                returns  the  Julian date (in %) computed from the Year
  647.                (in VY), the month (in VM) and the day (in  VD),  where
  648.                VY,  VM,  and  VD  are  sheet  cells.  These may be the
  649.                result of date arithmetic.  
  650.  
  651.   *U JDATE Var 
  652.  
  653.                assumes  the  formula in cell Var (any spreadsheet cell
  654.                name) contains a date string in  the  format  YY/MM/DD.
  655.                It reads this formula and converts the date to a Julian
  656.                date, returning it in the % accumulator.  
  657.  
  658.   *U JTOCH Jul,Var 
  659.  
  660.                assumes  that  variable Jul (any spreadsheet cell) con-
  661.                tains a Julian date and changes it into an ASCII string
  662.                in the cell whose name is in the Var position here.  
  663.  
  664.   *U DATE VY,VM,VD,Var 
  665.  
  666.                uses  VY,  VM,  and VD as year, month and day, and com-
  667.                putes a Julian date from them.   It  then  composes  an
  668.                ASCII  string of form YY/MM/DD for that date and stores
  669.                in the formula for Var.  
  670.  
  671.   *U WKDYS D1,D2 
  672.  
  673.                computes the number of workdays between Julian dates D1
  674.                and D2 just as taking  the  difference  of  two  Julian
  675.                dates gives differences between calendar dates in days. 
  676.  
  677.   *U WKDIN D1,N1 
  678.  
  679.                returns  a  Julian  date that is N1 work days after the
  680.                date in D1.  
  681.  
  682.   *U IDATE() 
  683.  
  684.                returns the current date as a Julian day.  
  685.  
  686.   *U MTXEQ(AA:AA,XX:XX,BB:BB) 
  687.  
  688.                solves  equation  AX=B  where A, X, and B are matrices,
  689.                and where the notation AA:AA means  two  cells  at  the
  690.                upper  left  and  lower  right  edges of matrix A (e.g.
  691.                B2:C3 for the 2 X 2 matrix so defined), and  the  XX:XX
  692.                and  BB:BB  notation means the same for the X and B ma-
  693.                trices.  
  694.  
  695.   *U MOVEV mtxa,mtxb 
  696.  
  697.                moves values from mtxa to mtxb (useful prior to calling
  698.                MTXEQ).  
  699.  
  700.   *U MDET mtx 
  701.  
  702.                This  function  computes and returns the determinant of
  703.                matrix mtx.  
  704.  
  705.   *U MPROD A,B,C 
  706.  
  707.                This function will multiply matrix A by matrix B giving
  708.                matrix C, provided that their dimensions  are  compati-
  709.                ble.  
  710.  
  711.   *U MADDV A,B,C 
  712.  
  713.                This  function  adds matrix A to matrix B and stores in
  714.                matrix C.  All matrices must have the same dimensions. 
  715.  
  716.   *U MSUBV A,B,C 
  717.  
  718.                This  function subtracts matrix B from matrix A leaving
  719.                the result in matrix C.  
  720.  
  721.   *U MMPYT A,B,C 
  722.  
  723.                This function multiplies matrix A-transpose by matrix B
  724.                and stores the result in matrix C;  dimensions must  be
  725.                compatible.  
  726.  
  727.   *U MMPYC A,B,K 
  728.  
  729.                This  function  multiplies every element of matrix A by
  730.                constant K.  
  731.  
  732.  
  733.   *U VARY X,A,W,I,P;Q;R;S;T;U;V;W 
  734.  
  735.                (Equation Solving by Iterative Search) 
  736.  
  737.                This   function  allows  AnalytiCalc  to  automatically
  738.                search for solutions to equations over up to  8  dimen-
  739.                sions.  The operation is that the accumulators named in
  740.                the fields shown as P;Q;R;S;T;U;V;W (one to  8  may  be
  741.                specified,  only one is required) are varied by a frac-
  742.                tion W about their initial values (later scaled down by
  743.                the  gradient of the change in X) to attempt to get ac-
  744.                cumulator or cell X to equal  accumulator  or  cell  A.
  745.                This  is  done for I iterations, where I is another ac-
  746.                cumulator.  
  747.  
  748.   *U XQTCM command   will  execute  the  command  (terminated  by  the
  749.                end-of-line), with any command except X or K permitted,
  750.                from  inside  a cell.  This allows command files driven
  751.                from cells to control moving data, etc.  
  752.  
  753.   *U STRVL V1,start;len 
  754.  
  755.                will  return  a  value  that  is  made  from  up  to  8
  756.                characters in the FORMULA of cell V1 (where V1  is  any
  757.                cell name), starting at character "start" and for "len"
  758.                characters.  
  759.  
  760.   *U HERE 
  761.  
  762.                will  return the current location on the matrix and the
  763.                current maximum row and column used.  T,U get col, row.
  764.                W,Y get max col, row used.  
  765.  
  766.   *U FFTFW and *U FFTRV perform Fast Fourier Transforms in the forward
  767.                and reverse (inverse) directions on the given range  of
  768.                data.  
  769.  
  770.   *U LINEF Vy:Vy,Vx:Vx (with the Vx range optional) fits a line to the
  771.                input range.  Eqn:  y=Ux+T.  % gets err,  W  gets  cor.
  772.                coef.  
  773.   *XV filename V1 
  774.   *XF filename V1        The *X class commands are for sheet linkages. 
  775.                *XF  loads  a  Formula  from another saved spreadsheet,
  776.                while *XV loads a Value.  
  777.  
  778.  
  779.  
  780.       The  following  *U  DBxxxxxx functions also exist as commands of
  781.  form FILxxxxxx with the same results.  
  782.  
  783.  
  784.  
  785.   *U  DBOPINS  range  filename  Open  input sequential on filename for
  786.                cells in range When the input  file  is  open  and  any
  787.                operation  causes  a read of the cell, the FORMULA will
  788.                be taken from the file and used.  If the file is opened
  789.                with  the OPINU option (for Update), then when the FOR-
  790.                MULA of the cell is written, it will also write to  the
  791.                file.   The  OPINU option applies only to random access
  792.                files.  Initially both input and output reads are  dis-
  793.                abled  (ENAINP and ENAOUT enable them).  When a sequen-
  794.                tial file (or  device  such  as  a  mailbox,  pipe,  or
  795.                communications  line) is used for input, it is advanta-
  796.                geous to read data into  a  range  once,  then  disable
  797.                input/output  again,  to allow it to be handled between
  798.                these commands.  The EDTINP  and  FMTOUT  commands  are
  799.                designed   to   do  this  to  make  it  easier  to  use
  800.                AnalytiCalc for a filter between sequential files.  
  801.  
  802.   *U DBOPINR range filename Open input random on filename for cells in
  803.                range 
  804.  
  805.   *U DBOPINU range filename Open range for update on filename for read
  806.                and write as random access.  skip 1 
  807.   *U DBCLSINP Close input 
  808.                lexically later than V2.  
  809.  
  810.   *U  DBLENFRM  V1:V2 returns the length of the formula for cell V1 in
  811.                the % accumulator and in cell V2 IF CELL V2  IS  VALID.
  812.                Otherwise  the  cell specified in V2 is ignored, though
  813.                it must be present in the command or function.  
  814.  
  815.   *U  DBTRMFRM  V1:V2,V3,V4 Reads the formula in V1 and uses V3 and V4
  816.                as start and end byte numbers within it.  It returns to
  817.                V2 the formula that is between the start and end bytes,
  818.                trimming the V1 formula into V2 by chopping out the un-
  819.                desired  parts.  The find substring function CMPFRM can
  820.                be used to find delimiter bytes  if  absolute  columnar
  821.                formatting  is not desired.  As in all these functions,
  822.                CMPFRM and LENFRM have the forms 
  823.  
  824.          *U WKDYS V1,V2 
  825.  
  826.  takes  Julian dates in variables V1 and V2 and computes the number of
  827.  workdays between the two, not counting the initial date if  it  is  a
  828.  workday (to be similar to differences between Julian dates).  
  829.  
  830.          *U WKDIN V1,V2 
  831.  
  832.  takes  a Julian date in V1 and a number of days in V2 and returns the
  833.  Julian date that is V2 workdays after the date in V1.  It is  thus  a
  834.  sort  of  inverse  for  the *U WKDYS function.  The resulting date is
  835.  guaranteed to be in the Monday to Friday range.  A workday is  Monday
  836.  to Friday.  The functions know nothing of holidays.  
  837.  
  838.       In  V18-08A,  AnalytiCalc can compute line fits and Fast Fourier
  839.  transforms on data.  
  840.  
  841.          *U LINEF Y1:Y2,X1:X2 
  842.  
  843.  computes  a line whose equation is Y=mX+B, where m is returned in the
  844.  U accumulator and B is returned in the T accumulator.  The %  accumu-
  845.  lator returns the fitting error in Y.  The line is fit over the range
  846.  Y1:Y2 in Y, with the X coordinates optional and if they are  present,
  847.  they  must  be in the cells in the X1:X2 range given.  If the X range
  848.  is omitted, 1.  to the max.  number of points will be used.  
  849.  
  850.          *U FFTFW V1:V2 
  851.  
  852.  computes the forward (t to freq) Fourier transform of the range and 
  853.  
  854.          *U FFTRV V1:V2 
  855.  
  856.  computes the reverse (freq.  to t) transform.  The range  must  be  a
  857.  power  of two long (if less, the largest power of 2 available is used
  858.  and extra points are ignored).  Data is assumed to be the real  coef-
  859.  ficients in the first half and the imaginary ones in the second half.
  860.  FFT data is returned in this layout also.  Thus, the real data (which
  861.  is  frequently  the part of interest) is returned first.  The reverse
  862.  FFT of the forward FFT returns the original data.  The FFT is of  in-
  863.  terest for finding the frequency distribution of partially sinusoidal
  864.  distributions.  
  865.